package com.turing.post.organization.util;

import java.util.List;

import javax.ejb.Local;
import javax.ejb.Remote;

import com.turing.post.util.PCPSApplicationException;

/**
 * 平台机构隶属关系数据访问接口
 * 
 * @author zxp
 * @Jan 3, 2013
 */
@Remote
@Local
public interface SysBranchSubordDao {

	/**
	 * 新增平台机构隶属关系
	 * 
	 * @param sysBranchSubord
	 *            平台机构隶属关系
	 * @throws PCPSApplicationException
	 */
	public void insertSysBranchSubord(SysBranchSubord sysBranchSubord)
			throws PCPSApplicationException;

	/**
	 * 根据子机构号查询平台机构隶属关系列表
	 * 
	 * @param subBranchNo
	 *            子机构号
	 * @return List 平台机构隶属关系列表
	 */
	public List<SysBranchSubord> getSysBranchSubordListBySubBranchNo(
			String subBranchNo);

	/**
	 * 根据登录用户归属机构号获取发卡商以及发卡商机构信息
	 * 
	 * @param branchNo
	 * @return List 平台机构隶属关系列表
	 */
	public List<OrganTreeList> getSysBranchSubordListByBranchNo(String branchNo);

	/**
	 * 根据登录用户归属机构号获取所有机构信息
	 * 
	 * @param branchNo
	 *            平台机构号
	 * @return List 平台机构隶属关系列表
	 */
	public List<OrganTreeList> getAllSysBranchSubordListByBranchNo(
			String branchNo);

	/**
	 * 根据机构号查询下属销售机构列表
	 * 
	 * @param branchNo
	 *            机构号
	 * @return List 平台机构隶属关系列表
	 */
	public List<SysBranchSubord> getAllSaleBranchListByBranchNo(String branchNo);

	/**
	 * 根据机构号查询下属发卡商分支机构列表
	 * 
	 * @param branchNo
	 *            机构号
	 * @return List 平台机构隶属关系列表
	 */
	public List<SysBranchSubord> getAllIssueBranchListByBranchNo(String branchNo);

	public List<OrganTreeList> getReportSysBranchSubordListByBranchNo(
			String branchNo);

	/**
	 * 查询机构in集合
	 * 
	 * @param subBranchType
	 *            机构类型 传""查询全部类型
	 * @param branchNo
	 *            机构号
	 * @return
	 */
	public String getReportAllSaleBranchListByBranchNo(String subBranchType,
			String branchNo);

	public void deleteSysBranchSubord(String branchNo)
			throws PCPSApplicationException;

	/**
	 * 机构下层机构
	 * 
	 * @param branchNo
	 * @return
	 */
	public List<SysBranchSubord> getNextLevelBranchNoList(String branchNo);

}
